diff --git a/Doc/Makefile.am b/Doc/Makefile.am
new file mode 100644
--- /dev/null
+++ b/Doc/Makefile.am
@@ -0,0 +1,5 @@
+dist_noinst_DATA = manual.ps
+dist_pdf_DATA = manual.pdf
+
+%.pdf: %.ps
+	ps2pdf $<
diff --git a/Graphs/Makefile.am b/Graphs/Makefile.am
new file mode 100644
--- /dev/null
+++ b/Graphs/Makefile.am
@@ -0,0 +1,2 @@
+EXTRA_DIST = 0README
+dist_noinst_DATA = 4elt.graph 4elt.graph.part.10 metis.mesh test.mgraph
diff --git a/Lib/Makefile.am b/Lib/Makefile.am
new file mode 100644
--- /dev/null
+++ b/Lib/Makefile.am
@@ -0,0 +1,61 @@
+pkgincludedir = $(includedir)/metis
+pkginclude_HEADERS = defs.h macros.h metis.h proto.h rename.h struct.h
+
+SRC = \
+	balance.c \
+	bucketsort.c \
+	ccgraph.c \
+	coarsen.c \
+	compress.c \
+	debug.c \
+	estmem.c \
+	fm.c \
+	fortran.c \
+	frename.c \
+	graph.c \
+	initpart.c \
+	kmetis.c \
+	kvmetis.c \
+	kwayfm.c \
+	kwayrefine.c \
+	kwayvolfm.c \
+	kwayvolrefine.c \
+	match.c \
+	mbalance.c \
+	mbalance2.c \
+	mcoarsen.c \
+	memory.c \
+	mesh.c \
+	meshpart.c \
+	mfm.c \
+	mfm2.c \
+	mincover.c \
+	minitpart.c \
+	minitpart2.c \
+	mkmetis.c \
+	mkwayfmh.c \
+	mkwayrefine.c \
+	mmatch.c \
+	mmd.c \
+	mpmetis.c \
+	mrefine.c \
+	mrefine2.c \
+	mutil.c \
+	myqsort.c \
+	ometis.c \
+	parmetis.c \
+	pmetis.c \
+	pqueue.c \
+	refine.c \
+	separator.c \
+	sfm.c \
+	srefine.c \
+	stat.c \
+	subdomains.c \
+	timing.c \
+	util.c
+
+lib_LTLIBRARIES = libmetis.la
+libmetis_la_SOURCES = $(SRC)
+libmetis_la_LIBADD = -lm
+libmetis_la_LDFLAGS = -no-undefined -release $(PACKAGE_VERSION)
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,5 @@
+SUBDIRS = Lib Programs Graphs Test Doc
+EXTRA_DIST = CHANGES FILES INSTALL LICENSE VERSION
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = metis.pc
diff --git a/Programs/Makefile.am b/Programs/Makefile.am
new file mode 100644
--- /dev/null
+++ b/Programs/Makefile.am
@@ -0,0 +1,23 @@
+AM_CPPFLAGS = -I$(top_srcdir)/Lib
+LDADD = $(top_builddir)/Lib/libmetis.la
+
+bin_PROGRAMS = \
+	pmetis \
+	kmetis \
+	oemetis \
+	onmetis \
+	mesh2dual \
+	mesh2nodal \
+	partdmesh \
+	partnmesh \
+	graphchk
+
+pmetis_SOURCES = pmetis.c io.c
+kmetis_SOURCES = kmetis.c io.c
+oemetis_SOURCES = oemetis.c io.c smbfactor.c
+onmetis_SOURCES = onmetis.c io.c smbfactor.c
+mesh2dual_SOURCES = mesh2dual.c io.c
+mesh2nodal_SOURCES = mesh2nodal.c io.c
+partdmesh_SOURCES = partdmesh.c io.c
+partnmesh_SOURCES = partnmesh.c io.c
+graphchk_SOURCES = graphchk.c io.c
diff --git a/Test/Makefile.am b/Test/Makefile.am
new file mode 100644
--- /dev/null
+++ b/Test/Makefile.am
@@ -0,0 +1,11 @@
+AM_CPPFLAGS = -I$(top_srcdir)/Lib
+LDADD = $(top_builddir)/Lib/libmetis.la
+
+check_PROGRAMS = mtest
+mtest_SOURCES = mtest.c ../Programs/io.c
+
+GRAPHS = \
+	../Graphs/4elt.graph
+
+check-local: $(check_PROGRAMS) $(GRAPHS)
+	-./mtest ../Graphs/4elt.graph
diff --git a/configure.ac b/configure.ac
new file mode 100644
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,40 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.69])
+AC_INIT([METIS],[4.0.3],[karypis@cs.umn.edu],[metis],[http://glaros.dtc.umn.edu/gkhome/metis/metis/overview])
+AC_CONFIG_SRCDIR([Lib/metis.h])
+AC_CONFIG_HEADERS([config.h])
+AM_INIT_AUTOMAKE([foreign])
+LT_INIT
+
+# Checks for programs.
+AC_PROG_INSTALL
+AC_PROG_CC
+
+LIBS_SAVED=$LIBS
+
+# Checks for libraries.
+AC_CHECK_LIB([m], [sqrt])
+
+# Checks for header files.
+AC_CHECK_HEADERS([malloc.h stdlib.h string.h strings.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+
+# Checks for library functions.
+AC_FUNC_MALLOC
+AC_FUNC_REALLOC
+AC_CHECK_FUNCS([pow sqrt strtol])
+
+LIBS=$LIBS_SAVED
+
+AC_CONFIG_FILES([
+	metis.pc
+	Makefile
+	Doc/Makefile
+	Graphs/Makefile
+	Lib/Makefile
+	Programs/Makefile
+	Test/Makefile])
+AC_OUTPUT
diff --git a/metis.pc.in b/metis.pc.in
new file mode 100644
--- /dev/null
+++ b/metis.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: @PACKAGE_NAME@
+Description: Software for partitioning unstructured graphs and meshes
+Version: @PACKAGE_VERSION@
+URL: @PACKAGE_URL@
+Libs: -L${libdir} -lmetis
+Libs.private: -lm
+Cflags: -I${includedir}/metis
